package qc.module.ehs.mapper;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import qc.common.core.enums.EhsEpibolyStatusEnum;
import qc.module.ehs.dto.epibolyperson.EpibolyPersonDto;
import qc.module.ehs.entity.EhsEpibolyPerson;

import java.util.List;

/**
 * EhsEpibolyPersonMapper
 * @author YRR
 * @create 2025-03-16 20:28
 */
@Mapper
public interface EhsEpibolyPersonMapper {
    EhsEpibolyPersonMapper MAPPER = Mappers.getMapper(EhsEpibolyPersonMapper.class);

    @Mapping(target = "status", ignore = true)
    EhsEpibolyPerson toEntity(EpibolyPersonDto dto);

    default EhsEpibolyPerson dtoToEntity(EpibolyPersonDto dto) {
        EhsEpibolyPerson en = EhsEpibolyPersonMapper.MAPPER.toEntity(dto);
        en.setStatus(getEpibolyPersonStatus(dto.getStatus()));
        return en;
    }

    @Mapping(target = "status", source = "status.index")
    EpibolyPersonDto toDto(EhsEpibolyPerson en);

    List<EpibolyPersonDto> toDtoList(List<EhsEpibolyPerson> en);

    static EhsEpibolyStatusEnum getEpibolyPersonStatus(Integer status) {
        for (EhsEpibolyStatusEnum item : EhsEpibolyStatusEnum.values()) {
            if (item.getIndex() == status) {
                return item;
            }
        }
        return EhsEpibolyStatusEnum.COOPERATION;
    }

}
